// =======================================================================
// 
//       Filename:  commandelement.hpp
// 
//    Description:  
// 
//        Version:  1.0
//        Created:  20.04.2010 00:42:44
//       Revision:  none
//       Compiler:  g++
// 
//         Author:  Dominik 'domachine' Burgdörfer (-), dominik.burgdoerfer@googlemail.com
//        Company:  -
// 
// =======================================================================


#ifndef  COMMANDELEMENT_INC
#define  COMMANDELEMENT_INC
#include "element.hpp"
#include "../types/object.hpp"
#include <vector>
#include <boost/shared_ptr.hpp>

namespace webplodder {
    namespace Template {
        class File;

        class CommandElement : public Element
        {
            public:
                CommandElement(File& parent);

                CommandElement(File& parent,
                        const std::string& name,
                    const std::vector<boost::shared_ptr<types::Object> >& 
                                                params);

                std::string name() const;

                void setName(const std::string& name);

                const std::vector<boost::shared_ptr<types::Object> >&
                    parameters() const;

                void setParameters(
                        const std::vector<
                            boost::shared_ptr<types::Object> >& 
                                                params);

            protected:
                bool getChar(char& ch);

            private:
                std::string mName;
                std::vector<boost::shared_ptr<types::Object> > mParams;
        };
    }
}
#endif   // ----- #ifndef COMMANDELEMENT_INC  -----
